package pack0917;

import java.util.Scanner;

// 作业讲解
public class Work01 {

    /*
    1、 山上有一口缸可以装 50 升水，现在有 15 升水。老和尚叫小和尚下山挑
        水，每次可以挑 5 升。问：小和尚要挑几次水才可以把水缸挑满？通过编
        程解决这个问题。
        （提示：
        1. 用整型变量 water 表示水缸里的水”int water=15;”
        2. 用整型变量 i 表示小和尚下上挑水的次数”int i=0”
        3. 分析循环条件(水少于 50 升)，循环操作（水增加 5 升，挑水次数
        增加 1）
        4. 套用 while 循环(或 do-while 循环)写代码
        ）
     */
    public static void a() {
        int water = 15; // 岗中的水
        int count = 0; // 统计次数
        while (water < 50) {
            water += 5;
            count++;
        }
        System.out.println(count);
    }

    // 2、 使用循环输出：100,95,90,85,…,5,使用 for 循环实现
    public static void b() {
        for (int i = 100; i >= 5; i = i - 5) {
            System.out.print(i + " ,");
        }
        System.out.println("\b");
    }

    // 3、 计算 100 以内（包含）的偶数之和
    public static void c() {
        int sum = 0;
        int i = 1;
        do {
            if (i % 2 == 0) {
                sum = sum + i;
            }
            i++;
        } while (i < 101);
        System.out.println(sum);
    }

    // 4、 今有物不知其数，三三数之剩二，五五数之剩三，七七数之剩二，问物几何？（有一个未知数(100 以内)）
    public static void d() {
        for (int i = 0; i < 100; i++) {
            if (i % 3 == 2 && i % 5 == 3 && i % 7 == 2) {
                System.out.println("这个数是：" + i);
                break;
            }
        }
    }

    /*
        5、 实现一个课程名称和课程代号的转换器：输入下表中的课程代号，输出课程的名称。用户可以循环进行输入，如果输入 0 就退出系统。
        （使用 while和 do-while 循环分别实现）
     */
    public static void e1() {
        Scanner scan = new Scanner(System.in);
        while (true) {
            System.out.print("请输入课程编号：");
            int id = scan.nextInt();
            switch (id) {
                case 1 -> System.out.println("使用 Java 语言理解程序逻辑");
                case 2 -> System.out.println("使用 HTML 语言开发商业站点");
                case 3 -> System.out.println("使用 SQL Server 管理和查询数据");
                case 4 -> System.out.println("使用 C# 开发数据库应用程序");
            }
            if (id == 0) {
                break;
            }
        }
    }

    public static void e2() {
        Scanner scan = new Scanner(System.in);
        do {
            System.out.print("请输入课程编号：");
            int id = scan.nextInt();
            switch (id) {
                case 1 -> System.out.println("使用 Java 语言理解程序逻辑");
                case 2 -> System.out.println("使用 HTML 语言开发商业站点");
                case 3 -> System.out.println("使用 SQL Server 管理和查询数据");
                case 4 -> System.out.println("使用 C# 开发数据库应用程序");
            }
            if (id == 0) {
                break;
            }
        } while (true);
    }

    /*
    6、 本金 10000 元存入银行，年利率是千分之三。每过 1 年，将本金和利息相加作为新的本金。计算 5 年后，获得的本息和是多少？
    （使用 for 循环实现）
     */
    public static void f() {
        double money = 10000;
        for (int i = 0; i < 5; i++) {
            money = money + money * 0.003;
        }
        System.out.println(money);
    }

    // 7、 求整数 1~100 的累加值，但要求跳过所有个位为 3 的数。（使用 for 循环实现）
    public static void g() {
        int sum = 0;
        for (int i = 1; i < 101; i++) {
            if (i % 10 != 3) {
                sum += i;
            }
        }
        System.out.println(sum);
    }

    /*
    8、 输入一个正整数 N，判断该数是不是质数，如果是质数输出“N 是一个质数”，否则输出“N 不是质数”。
    提示：质数的含义：除了 1 和它本身不能被任何数整除。（使用 for 循环实现）
     */
    public static void h() {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入一个数：");
        int number = scan.nextInt();
        // 标记法
        boolean flag = true; // true代表是素数
        for (int i = 2; i < number; i++) {
            if (number % i == 0) {
                flag = false;
                break;
            }
        }
        if (flag) {
            System.out.println(number + "是质数");
        } else {
            System.out.println(number + "不是质数");
        }
    }

    // 9、 输入一个正整数，将该数的各位左右反转输出，即输入 123，输出 321。（使用 while 循环实现）
    public static void i() {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入一个数：");
        int number = scan.nextInt();
        while (number > 0) {
            System.out.print(number % 10); // 1234-->4-->3-->2-->1
            number = number / 10; // 123-->12-->1-->0
        }
    }


    /*
    10、 在屏幕上打印出 n 行的金字塔图案，如，若 n=5,则图案如下：
            *
           ***
          *****
         *******
        *********
     */
    public static void j() {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入一个数：");
        int n = scan.nextInt();
        for (int i = 0; i < n; i++) {
            // 输出空格
            for (int j = 0; j < n - i; j++) {
                System.out.print(" ");
            }
            // 输出*
            for (int j = 0; j < 2 * i + 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    /*
     ********************
     */
    public static void j1() {
        for (int i = 0; i < 10; i++) {
            System.out.print("*");
        }
    }

    /*
     ***************
     ***************
     ***************
     */
    public static void j2() {
        for (int j = 0; j < 5; j++) {
            for (int i = 0; i < 10; i++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    /*
     *
     * *
     * * *
     * * * *
     */
    public static void j3() {
        for (int j = 0; j < 5; j++) {
            for (int i = 0; i <= j; i++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }

    /*
     *****
     ****
     ***
     **
     *
     */
    public static void j4() {
        for (int j = 0; j < 5; j++) {
            for (int i = 0; i < 5 - j; i++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }

    // 拓展练习：输出100-500之间的所有素数
    public static void main(String[] args) {
        j();
    }
}